// TypeScript 的核心原则之一是对值所具有的结构进行类型检查。
// 我们使用接口（Interfaces）来定义对象的类型。`接口是对象的状态(属性)和行为(方法)的抽象(描述)`
// // 接口用于描述对象。
// // 1- 接口关键字为interface
// // 2- 接口建议以I开头
// interface IPerson {
//     readonly userName:string,// 只读属性
//     age?:number,// 可选择
//     hobby:number[],
//     run:(a:number,b:number)=>number
// }
// const obj:IPerson = {
//     userName:"zhangsan",
//     // age:12,
//     hobby:[1,2,3],
//     run(a:number,b:number):number{
//         return 1;
//     }
// }
// console.log(obj.userName);
// // obj.userName = "lisi"


// 可以与断言结合使用
// 以下程序有异常：
// const obj = {
//
// }
// console.log(obj.userName);

// 1:类型注释设置为any
// const obj:any = {
//
// }
// console.log(obj.username);

// 2:可以增加userName
// const obj = {
//     userName:"zhangsan"
// }
// console.log(obj.userName);

// 3:使用接口
// interface IObj {
//     userName:string
// }
// const obj = {
//
// }
// console.log((obj  as IObj).userName);